﻿using StructureMap;
using TimeTracker.Core.DataAccess;
using TimeTracker.Core.Domain.Entities;

namespace TimeTracker.Core.Services.Implementation
{
    [Pluggable("Default")]
    public class KorisnikService : IKorisnikService
    {
        private readonly IKorisnikRepository _korisnikRepository;
        private readonly IKorisnikSession _korisnikSession;
        private readonly IRedirectorService _redirectorService;

        public KorisnikService()
        {
            _korisnikRepository = ObjectFactory.GetInstance<IKorisnikRepository>();
            _korisnikSession = ObjectFactory.GetInstance<IKorisnikSession>();
            _redirectorService = ObjectFactory.GetInstance<IRedirectorService>();
        }

        public bool KorisnikPostoji(string username)
        {
            Korisnik korisnik = _korisnikRepository.UzmiKorisnikaPoKorisnickomImenu(username);

            return korisnik != null;
        }

        public bool EmailPostoji(string email)
        {
            Korisnik korisnik = _korisnikRepository.UzmiKorisnikaPoEmailu(email);

            return korisnik != null;
        }

        public string Prijavi(string username, string lozinka)
        {
            Korisnik korisnik = _korisnikRepository.UzmiKorisnikaPoKorisnickomImenuLozinci(username, lozinka);

            if(korisnik != null)
            {
                _korisnikSession.Prijavljen = true;
                _korisnikSession.KorisnickoIme = username;
                _korisnikSession.TrenutniKorisnik = _korisnikRepository.UzmiKorisnikaPoId(korisnik.KorisnikId);
                _redirectorService.IdiNaAdminStranu();
            }
            else
            {
                return @"Pogrešno korisničko ime ili lozinka";
            }

            return @"Pogrešno korisničko ime ili lozinka";
        }

        public void Odjavi()
        {
            _korisnikSession.Prijavljen = false;
            _korisnikSession.TrenutniKorisnik = null;
            _korisnikSession.KorisnickoIme = "";
        }
    }
}
